#include<stdio.h>
#include<fcntl.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<string.h>
#include<stdlib.h>

int main(){
    mkfifo("/home/gec/pipe", 0666);

    //管道文件默认阻塞，可设置为非阻塞
    int fd = open("/home/gec/pipe", O_RDWR);

    //将管道文件设置为非阻塞
    long status = fcntl(fd, F_GETFL);//获得原有status
    status |= O_NONBLOCK;            //在原有的status上加上非阻塞属性
    fcntl(fd, F_SETFL, status);

    char buf[10];
    if(read(fd, buf, 10) <= 0)
        printf("管道没有数据\n");
    
    status = fcntl(fd, F_GETFL);
    status &= ~O_NONBLOCK;
    fcntl(fd, F_SETFL, status);

    read(fd, buf, 10);
}